/**
 * 
 */
package guice.action;

/**
 * @author <a href='mailto:rahul.thakur.xdev@gmail.com'>Rahul Thakur</a>
 * @since 1.0
 * @version $Id$
 */
public interface ActionRegistry {

	/**
	 * Looks up a entity that is decorated with {@link Action}.
	 * 
	 * @param name
	 *            Unique action name.
	 * 
	 * @return
	 * @throws ActionNotFoundException
	 */
	Object lookup(String name) throws ActionNotFoundException;

	/**
	 * 
	 * @param name
	 *            unique Name of the discovered Action implementation.
	 * @param actionKlass
	 *            Class which is decorated with @Action annotation.
	 * @param actionMethodName
	 *            Name of the method which is decorated with @ActionMethod
	 *            annotation.
	 * @throws ActionRegistrationException
	 */
	void register(String name, Class<?> actionKlass, String actionMethodName) throws ActionRegistrationException;

}
